2636
12321
J'ai donc du mal à comprendre l'utilisation correcte de list :: sort () en ce qui concerne une liste de structures. Voici le code pertinent:
étudiant struct
{
char firstnm [20],
lastnm [20];
identifiant int,
classe;
};
list  sList;
// Code non pertinent ...
cout << "Veuillez entrer votre propre nom, identifiant et note. (Ex: mon premier mylast 0 12) \ n";
cin >> data.firstnm >> data.lastnm >> data.id >> data.grade;
sList.push_back (données);
sList.sort ();
Le problème que j'essaie de résoudre utilise sList.sort () pour trier par identifiant. Cependant, je n'ai aucune idée de comment le passer correctement dans list :: sort (). Merci d'avance pour toute aide / temps!
EDIT: La solution était simplement d'ajouter ceci à ma structure
opérateur booléen <(const student & cmp) const {
return id 
                                
Vous devriez jeter un oeil à std :: sort. (https://en.cppreference.com/w/cpp/algorithm/sort) Il existe plusieurs définitions de cette fonction, et une où vous pouvez spécifier ce que vous voulez trier.
Jetez également un œil à cet article, je pense que c'est ce dont vous avez besoin: https://stackoverflow.com/a/21234017/6663947
Éditer :
c'est un exemple de comparateur:
sList.sort ([] (étudiant const & a, étudiant const & b) {return a.id 
tri vide (Compare comp);
En supposant que vous souhaitiez trier les objets étudiants de votre liste en fonction de l'ID de clé dans l'ordre croissant. Vous pouvez définir l'opérateur